package clientes;

import processos.Calculo;
import veiculos.Automovel;
import clientes.exceptions.ClienteInexistenteException;
import clientes.exceptions.ClienteExistenteException;
import clientes.exceptions.NomeClienteInvalidoException;
import enderecos.Endereco;


public class Cliente {

	private String nome;
	private String telefone;
	private Endereco endereco;
	private Automovel automovel;
	private Calculo calculo;
	private String cpf;
	
	private IClienteDAO clienteDAO = new ClienteDAO();
	
	
	public void salvar() throws ClienteExistenteException, NomeClienteInvalidoException{
		if(clienteDAO.isExisteCliente(this.nome)){
			throw new ClienteExistenteException();
		}
		if(nome.trim().length() < 2){
			throw new NomeClienteInvalidoException();
		}
		
		clienteDAO.cadastrarCliente(this);
	}
		
	public void excluirCliente(Cliente cliente) throws ClienteInexistenteException{
		if(clienteDAO.isExisteCliente(this.nome)){
			clienteDAO.excluirCliente(cliente);			
		}	


	}
	
 	public Cliente localizarCliente(String nome) throws ClienteInexistenteException{
 		if(clienteDAO.isExisteCliente(nome)){
			return clienteDAO.localizarCliente(nome); 			
 		}
	 	throw new ClienteInexistenteException();
	}
 	
 	public int quantidadeCliente(){
 		return clienteDAO.quantidadeCliente();
 	}
	
	public String getNome(){
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
		
	public String getTelefone(){
		return telefone;
	}
	
	public void setTelefone(String telefone){
		this.telefone = telefone;
	}
	
	public Endereco getEndereco(){
		return endereco;
	}
	
	public void setEndereco(Endereco endereco){
		this.endereco = endereco;
	}
	
	public Automovel getAutomovel(){
		return automovel;
	}
	
	public void setAutomovel(Automovel automovel){
		this.automovel = automovel;
	}

	public Calculo getCalculo() {
		return calculo;
	}

	public void setCalculo(Calculo calculo) {
		this.calculo = calculo;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
}


